const fs = require('fs');
const path = require('path');
const os = require('os');

console.log('🚀 创建便携式启动脚本...');

// 创建Windows版本启动脚本
function createWindowsStarter() {
  const batchContent = `@echo off
chcp 65001 >nul
title 📱💻 双向文件传输工具

echo.
echo ████████████████████████████████████████████████████████
echo █                                                      █
echo █        📱💻 双向文件传输工具 - 便携版                █
echo █                                                      █
echo ████████████████████████████████████████████████████████
echo.

REM 检查Node.js是否已安装
node --version >nul 2>&1
if %errorlevel% equ 0 (
    echo ✅ 检测到系统Node.js环境
    set "NODE_PATH=node"
    set "NPM_PATH=npm"
    echo 🔧 使用系统Node.js环境
    goto :install_deps
)

echo ❌ 未检测到Node.js环境
echo.
echo 🔧 正在为您自动配置便携式Node.js环境...
echo 📥 这可能需要几分钟时间，请耐心等待...
echo.

REM 下载便携式Node.js
if not exist "portable-node" mkdir portable-node

echo 📦 正在下载Node.js便携版...
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -Uri 'https://nodejs.org/dist/v18.19.0/node-v18.19.0-win-x64.zip' -OutFile 'portable-node\\node.zip'}"

if exist "portable-node\\node.zip" (
    echo 📦 正在解压Node.js...
    powershell -Command "Expand-Archive -Path 'portable-node\\node.zip' -DestinationPath 'portable-node' -Force"
    
    if exist "portable-node\\node-v18.19.0-win-x64" (
        move "portable-node\\node-v18.19.0-win-x64" "portable-node\\node" >nul 2>&1
        del "portable-node\\node.zip" >nul 2>&1
        echo ✅ Node.js便携版配置完成
    )
)

REM 设置便携式Node.js路径
if exist "portable-node\\node\\node.exe" (
    set "NODE_PATH=%~dp0portable-node\\node\\node.exe"
    set "NPM_PATH=%~dp0portable-node\\node\\npm.cmd"
    echo 🔧 使用便携式Node.js环境
) else (
    echo ❌ Node.js环境配置失败，请检查网络连接或手动安装Node.js
    pause
    exit /b 1
)

:install_deps
echo.
echo 📦 检查项目依赖...
if not exist "node_modules" (
    echo 📥 正在安装依赖包...
    "%NPM_PATH%" install --silent
    if %errorlevel% neq 0 (
        echo ❌ 依赖安装失败，请检查网络连接
        pause
        exit /b 1
    )
    echo ✅ 依赖安装完成
)

echo.
echo 🚀 正在启动服务...
echo.
"%NODE_PATH%" start.js

echo.
echo 📱 服务已停止，按任意键退出...
pause >nul
`;

  fs.writeFileSync('启动传输工具.bat', batchContent, 'utf8');
  console.log('✅ 已创建: 启动传输工具.bat');
}

// 创建Unix版本启动脚本
function createUnixStarter() {
  const shellContent = `#!/bin/bash

echo ""
echo "████████████████████████████████████████████████████████"
echo "█                                                      █"
echo "█        📱💻 双向文件传输工具 - 便携版                █"
echo "█                                                      █"
echo "████████████████████████████████████████████████████████"
echo ""

# 检查Node.js是否已安装
if command -v node &> /dev/null; then
    NODE_VERSION=$(node --version)
    echo "✅ 检测到系统Node.js环境: $NODE_VERSION"
    NODE_PATH="node"
    NPM_PATH="npm"
    echo "🔧 使用系统Node.js环境"
else
    echo "❌ 未检测到Node.js环境"
    echo ""
    echo "🔧 正在为您自动配置便携式Node.js环境..."
    echo "📥 这可能需要几分钟时间，请耐心等待..."
    echo ""
    
    # 创建便携式目录
    mkdir -p portable-node
    
    # 检测系统架构
    ARCH=$(uname -m)
    OS=$(uname -s)
    
    if [[ "$OS" == "Darwin" ]]; then
        if [[ "$ARCH" == "arm64" ]]; then
            NODE_URL="https://nodejs.org/dist/v18.19.0/node-v18.19.0-darwin-arm64.tar.gz"
            FILE_EXT="tar.gz"
        else
            NODE_URL="https://nodejs.org/dist/v18.19.0/node-v18.19.0-darwin-x64.tar.gz"
            FILE_EXT="tar.gz"
        fi
    else
        NODE_URL="https://nodejs.org/dist/v18.19.0/node-v18.19.0-linux-x64.tar.xz"
        FILE_EXT="tar.xz"
    fi
    
    echo "📦 正在下载Node.js便携版..."
    curl -L "$NODE_URL" -o "portable-node/node.$FILE_EXT"
    
    if [[ -f "portable-node/node.$FILE_EXT" ]]; then
        echo "📦 正在解压Node.js..."
        cd portable-node
        
        if [[ "$FILE_EXT" == "tar.gz" ]]; then
            tar -xzf "node.$FILE_EXT"
        else
            tar -xJf "node.$FILE_EXT"
        fi
        
        mv node-v18.19.0-* node
        rm "node.$FILE_EXT"
        cd ..
        echo "✅ Node.js便携版配置完成"
        
        NODE_PATH="./portable-node/node/bin/node"
        NPM_PATH="./portable-node/node/bin/npm"
        echo "🔧 使用便携式Node.js环境"
    else
        echo "❌ Node.js下载失败，请检查网络连接或手动安装Node.js"
        exit 1
    fi
fi

echo ""
echo "📦 检查项目依赖..."
if [[ ! -d "node_modules" ]]; then
    echo "📥 正在安装依赖包..."
    $NPM_PATH install --silent
    if [[ $? -ne 0 ]]; then
        echo "❌ 依赖安装失败，请检查网络连接"
        exit 1
    fi
    echo "✅ 依赖安装完成"
fi

echo ""
echo "🚀 正在启动服务..."
echo ""
$NODE_PATH start.js

echo ""
echo "📱 服务已停止"
`;

  fs.writeFileSync('启动传输工具.sh', shellContent, 'utf8');
  fs.chmodSync('启动传输工具.sh', '755');
  console.log('✅ 已创建: 启动传输工具.sh');
}

// 创建说明文件
function createReadme() {
  const readmeContent = `# 📱💻 双向文件传输工具 - 便携版

## 🚀 一键启动

### Windows用户
双击 \`启动传输工具.bat\` 即可运行

### Mac/Linux用户
双击 \`启动传输工具.sh\` 或在终端运行：
\`\`\`bash
./启动传输工具.sh
\`\`\`

## ✨ 便携特性

- **智能环境检测**：优先使用系统Node.js，不存在时自动下载便携版
- **零依赖安装**：无需预装任何软件
- **跨平台支持**：Windows、macOS、Linux通用
- **完全便携**：整个文件夹可复制到任意电脑运行

## 🔧 环境检测逻辑

1. **优先检测系统Node.js**：如果电脑已安装Node.js，直接使用系统环境
2. **自动下载便携版**：如果未检测到Node.js，自动下载对应平台的便携版
3. **智能架构识别**：自动识别x64/arm64架构，下载匹配版本
4. **版本兼容性**：使用Node.js 18.19.0 LTS版本，确保最佳兼容性

## 📱 使用说明

启动后会显示访问地址，在手机浏览器输入显示的地址即可使用。

支持：
- 📱➡️💻 手机上传文件到电脑
- 💻➡️📱 电脑发送文件到手机  
- 📥 手机接收和管理文件

## 🔧 首次运行

首次运行时会：
1. 自动检测Node.js环境
2. 如未安装，自动下载便携版Node.js（约50MB）
3. 自动安装项目依赖
4. 启动文件传输服务

整个过程完全自动化，无需手动操作！

## 📦 复制部署

1. **完整复制**：将整个项目文件夹复制到目标电脑
2. **直接启动**：双击对应平台的启动脚本即可
3. **无需配置**：自动检测环境并配置所需依赖
4. **跨平台兼容**：同一份文件可在Windows/Mac/Linux使用
`;

  fs.writeFileSync('便携版说明.md', readmeContent, 'utf8');
  console.log('✅ 已创建: 便携版说明.md');
}

// 运行创建过程
createWindowsStarter();
createUnixStarter();
createReadme();

console.log('');
console.log('🎉 便携版配置完成！');
console.log('');
console.log('📋 使用方法：');
console.log('  Windows: 双击 "启动传输工具.bat"');
console.log('  Mac/Linux: 双击 "启动传输工具.sh"');
console.log('');
console.log('✨ 智能特性：');
console.log('  ✅ 优先使用系统Node.js环境');
console.log('  ✅ 自动下载便携版（如需要）');
console.log('  ✅ 完全便携，可复制到任意电脑');
console.log('  ✅ 跨平台支持，一份代码处处运行'); 